package cn.iocoder.yudao.framework.security.core.annotations;

import java.lang.annotation.*;

/**
 * 预认证注解
 * 
 * 标记在需要用户登录认证的接口方法上，表示该接口需要用户已经通过认证。
 * 与 @PermitAll 相对，@PreAuthenticated 要求用户必须登录才能访问。
 * 
 * 使用场景：
 * - 需要获取当前登录用户信息的接口
 * - 需要用户身份验证的业务操作
 * - 个人中心相关功能
 * 
 * 注意：
 * - 该注解主要用于文档说明和代码可读性
 * - 实际的认证逻辑由 Spring Security 和 TokenAuthenticationFilter 处理
 * - 可以通过 SecurityFrameworkUtils.getLoginUserId() 获取当前用户ID
 *
 * @author 芋道源码
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface PreAuthenticated {
    
    /**
     * 是否必须认证，默认为 true
     * 
     * @return 是否必须认证
     */
    boolean value() default true;
    
}
